#include <iostream>

void my_printf() { }
template<typename T, typename ...Args>
void my_printf(const T &v, Args &&...args) {
    std::cout << v;
    if (sizeof ...(args) > 0) {
        // forward 形参完美转发，使类型保持不变
        // 这里后面的...表示可变参数的展开
        my_printf(std::forward<Args>(args)...);
    }
    else {
        std::cout << v;
        std::cout << std::endl;
    }
}
int main() {
    my_printf("hello");
    my_printf("hello", " world");
    my_printf("hello", "world", 374298);
    return 0;
}
